package com.Test;

import com.Test.Demo.Test2;

import java.util.Date;


//import java.lang.Math;
// java.lang 包下的类不用导入包就可以直接使用，类名 + 方法或字段
import static java.lang.Math.PI;
// 被static 修饰的包，称为静态包，使用不用加 类名，可以直接使用(方法或字段)，String就是 java.lang的静态包，



// protected 的权限探究
/*protected 主要体现在 不同包下，子类的才可以访问

 * */
class Demo1 extends Test2 {
    public void func() {
        System.out.println(super.name2);
//        System.out.println(super.name); // 默认权限，无法在不同的包下相互访问

    }
}

class Demo2 {

    Test2 test2 = new Test2();
    public void func() {
      /*  System.out.println(super.name2);
        // 无继承权限无法使用 super*/
//        System.out.println(test2.name2);
        // 被 protected 修饰的方法字段，无法在不同的包下，不是子类无法访问
    }
}





public class Test extends Test2 {
    // protected 的权限探究
    /*protected 主要体现在 不同包下，子类的才可以访问

    * */
    public static void main(String args[]) {
        Demo1 demo1 = new Demo1();
        demo1.func();
        /*静态的无法直接访问非静态的，(加载到内存和未加载到内存的原因)
        静态的可以通过实例化 new 间接的访问非静态的
        * */

//        System.out.println(super.name2);
        // super引用父类 不可以从静态中引用，因为加载内存与没有加载到内存的访问

    }





    // default  默认权限的探究
    /* default 默认权限的范围
    1.在同一个包下的类
    2.在同一个包下的不同类
    * */
    public static void main3(String agrs[]) {
        Test2 test2 = new Test2();
 /*       System.out.println(test2.a);
        System.out.println(test2.b);*/
    }






    public static void main2(String arg[]) {
        System.out.println(PI);
    }




    public static void main1(String arg[]) {
        int[] array = new int[5];
        Date date = new Date();
        System.out.println(date);
    }
}
